SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTPAGO_MASI_I02]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                     --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---M,dulo               : Empresa                    --*/  
/*---Programa             : Grabacion Detalle          --*/  
/*---                       Movimiento Bancos          --*/  
/*---                       (Egresos)                  --*/    
/*---Script               : tdbanc_p.sql               --*/  
/*---Nombre SP            : SP_TTPAGO_MASI_I02         --*/  
/*---Desarrollado por     : Denis Villacres P.         --*/  
/*---Fecha Creaci,n       : 06/01/2004                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi,n              : 2000                       --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/    
/*---Modificado 1 por     : Maribel Julca Rodriguez    --*/    
/*---Fecha Modificaci©n   : 20/04/2005                 --*/     
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI--*/    
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/    
/*---Modificado 2 por     : Carlos Marquez E           --*/    
/*---Fecha Modificaci©n   : 02/01/2005                 --*/     
/*---Detalle Modificaci©n : Adaptado para Pagos Indv Masivos--*/    
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TTPAGO_MASI_I02                      --*/  
/*---Grant all on SP_TTPAGO_MASI_I02 to public         --*/   
/*---SP_TTPAGO_MASI_I02                                --*/  
/*-------------------------------------------------------*/  
@ISCO_EMPR   TD_VC_002,
@ISCO_USUA_MODI  TD_VC_008_USUA,
@ISCO_BANC   TD_VC_003,
@ISNU_CNTA_BANC  TD_VC_020,
@ISAA_BNCO   TD_VC_004,
@ISMM_BNCO   TD_VC_002,
@ISTI_MOVI_BANC  TD_VC_001,
@ISNU_COMP_BANC  TD_VC_008,
@INNU_SECU   TD_IN_001,
@ISTI_ENTI   TD_VC_001,
@ISCO_ENTI   TD_VC_020,
@ISTI_DOCU_ENTI  TD_VC_003,
@ISNU_DOCU_ENTI  TD_VC_020,
@ISCO_MONE_DOCU  TD_VC_003,
@IDFE_DOCU   TD_DT_001,
@IDFE_EMIS   TD_DT_001,
@IDFE_PROG   TD_DT_001,
@INIM_DOCU   TD_NU_016_004,
@INIM_SALD_DOCU  TD_NU_016_004,
@INIM_DETA   TD_NU_016_004,
@ISDE_OBSE   TD_VC_100,
@ISST_CIER_DOCU  TD_VC_001_SINO,
@ISTI_DOCU   TD_VC_003,
@INFA_TIPO_CAMB  TD_NU_015_006,
@ISCO_MONE    TD_VC_003,
@INIM_SALD_CONV  TD_NU_016_004,
@INIM_DETA_NEGA  TD_NU_016_004,
@ISNU_CORR_COMP  TD_VC_020,
@ISTI_MOVI_OPER  TD_VC_001,
@ISCO_CNTA_EMPR  TD_VC_020,
@ISCO_ORDE_SERV  TD_VC_020,
@INNU_SECU_PRPA  TD_IN_001,
@ISCO_UNID_CNTB  TD_VC_003
        
 as        
        
        
          
 Declare         
	@VNNU_SECU TD_IN_001,     @VNIM_MOVI_ANTE  TD_NU_016_004,  @VNIM_TOTA TD_NU_016_004,        
	@VNIM_CONV_ANTE TD_NU_016_004,   @VNNU_REGI TD_IN_001,    @VSST_SIGN TD_VC_001,        
	@VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV  TD_NU_016_004, @VNIM_CONV_DOCU TD_NU_016_004,        
	@VSCO_MONE_NACI TD_VC_003, @VSCO_MONE_EXTR TD_VC_003       , @VSCO_TIPO_EGRE  TD_VC_003,        
	@VSCO_UNID_CONC TD_VC_003,        
	@VSCO_ESTA_LETR   TD_VC_003, @VSTI_DOCU_RETE   TD_VC_003,         
	@VSNO_ENTI TD_VC_100, @VSNU_RUCC TD_VC_020,         
	@VSNU_CHEQ TD_VC_020, @VSNU_DOCU_BANC TD_VC_020,        
	@VSNU_COMP_BACA TD_VC_020,         
	@VNIM_TOTA_DIST TD_NU_016_004, @VSTI_CAMB TD_VC_001, @VSTI_ORIG TD_VC_001, @VDFE_OPER TD_DT_001,        
	@VSCO_COND_CONT TD_VC_003, @VSNU_SERI TD_VC_008, @VSST_APRO_CXPA TD_VC_001, @VNNU_CONT TD_IN_001,    
	@VSCO_ESTA_ORIG TD_VC_001,
	@VSNU_DOCU_RETE  TD_VC_020

 Begin Tran SP_TDMOVI_BANC_I01        
        
	SELECT @VSCO_MONE_NACI = CO_MONE_DEFA,        
	@VSCO_MONE_EXTR = CO_MONE_EXTR,        
	@VSCO_COND_CONT = CO_COND_CONT,        
	@VSCO_TIPO_EGRE = CO_TIPO_OPEG,  ---- Egreso o Cargo        
	@VSST_APRO_CXPA = ST_APRO_CXPA        
	FROM TMPARA_TESO        
	WHERE CO_EMPR = @ISCO_EMPR        
	
	SELECT @VSTI_DOCU_RETE = TI_DOCU        
	FROM TTDOCU_CNTB        
	WHERE ST_DOCU_0021 = 'S'        
	
	If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''    
	-- Se busca el estado actual del documento    
		Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG 
output    
	
	If @ISCO_MONE_DOCU != @ISCO_MONE        
	Begin        
		Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
		From TTFACA_OPCI        
		Where CO_EMPR = @ISCO_EMPR        
		And CO_MODU = 'TEEM0001'        
		And CO_MENU = 'FTEEPBN'        
		
		If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )        
			Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG        
			From TMPARA_TESO        
			Where CO_EMPR = @ISCO_EMPR        
		
		Select @VDFE_OPER = FE_OPER,        
			   @VSCO_UNID_CONC = CO_UNID_CONC        
		From   TCMOVI_BANC        
		Where  CO_EMPR = @ISCO_EMPR         
		and    CO_UNID_CONC = @ISCO_UNID_CNTB
		and    CO_BANC = @ISCO_BANC         
		and    NU_CNTA_BANC = @ISNU_CNTA_BANC          
		and    AA_BNCO = @ISAA_BNCO        
		and    MM_BNCO = @ISMM_BNCO         
		and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
		and    NU_COMP_BANC = @ISNU_COMP_BANC         
	
		Select @VNIM_CONV_DOCU = (Select OFITESO.dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE, @ISCO_MONE_DOCU,         
			@VDFE_OPER, @INIM_DETA, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, 
@INFA_TIPO_CAMB))        
		
		Select @VNIM_CONV_DOCU = Round(@VNIM_CONV_DOCU, 2)        
	End        
	Else        
	Begin        
		Select @VSCO_UNID_CONC = CO_UNID_CONC        
		From   TCMOVI_BANC        
		Where  CO_EMPR = @ISCO_EMPR         
		and    CO_UNID_CONC = @ISCO_UNID_CNTB
		and    CO_BANC = @ISCO_BANC         
		and    NU_CNTA_BANC = @ISNU_CNTA_BANC          
		and    AA_BNCO = @ISAA_BNCO        
		and    MM_BNCO = @ISMM_BNCO         
		and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
		and    NU_COMP_BANC = @ISNU_COMP_BANC         
		
		Select @VNIM_CONV_DOCU = @INIM_DETA                
	
	End        
	
	If @INNU_SECU IS NULL        
	Begin        
		Select @VNNU_SECU   = NU_SECU        
		From   TDMOVI_BANC        
		Where  CO_EMPR = @ISCO_EMPR        
		and    CO_UNID_CONC = @ISCO_UNID_CNTB
		and    CO_BANC = @ISCO_BANC        
		and    NU_CNTA_BANC = @ISNU_CNTA_BANC        
		and    AA_BNCO = @ISAA_BNCO        
		and    MM_BNCO = @ISMM_BNCO         
		and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
		and    NU_COMP_BANC = @ISNU_COMP_BANC        
	
		If @VNNU_SECU > 0        
			Select @VNNU_SECU = @VNNU_SECU + 1        
		Else        
			Select @VNNU_SECU = 1           
	
		Select	@VNNU_CONT = IsNull(Count (CO_EMPR),0) 
		From	#TWRETE_BANC
		Where	TI_DOCU_RETE = @VSTI_DOCU_RETE And
				NU_DOCU_RETE = @ISNU_DOCU_ENTI
     
		
		IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0      
		Begin        
			Select @VSNU_SERI = Substring(@ISNU_DOCU_ENTI, 1, Patindex('%-%', @ISNU_DOCU_ENTI)-1)         
			Select @VSNU_DOCU_RETE = @ISNU_DOCU_ENTI

			/* Genero el œltimo correlativo para el documento comp. de retenci½n */        
			Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENTI, @VSNU_SERI, @ISNU_DOCU_ENTI 
OUTPUT        
		End        
		
		Insert into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,        
		NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_EMIS,     
		FE_DOCU, FE_PROG, IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU,     
		IM_DETA_NEGA, IM_SALD_CONV, NU_CORR_COMP, TI_MOVI_OPER, CO_CNTA_EMPR, CO_ORDE_SERV,     
		NU_SECU_PRPA, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC)
		Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,        
		@ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @ISCO_MONE_DOCU,       
		@IDFE_EMIS, @IDFE_DOCU, @IDFE_PROG, @INIM_DOCU, @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU,         
		@ISDE_OBSE, @ISST_CIER_DOCU, @INIM_DETA_NEGA , @INIM_SALD_CONV, @ISNU_CORR_COMP, @ISTI_MOVI_OPER,     
		@ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, @INNU_SECU_PRPA, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(), 
@ISCO_UNID_CNTB)
		
		If @@error <> 0        
		Begin        
			Rollback Tran SP_TDMOVI_BANC_I01        
			Return        
		End            
	
		If @VSST_APRO_CXPA = 'S'        
		Begin    
			Update TDPROG_PAGO        
			Set   TI_SITU = 'PAG',  
			CO_USUA_MODI = @ISCO_USUA_MODI,       
			FE_USUA_MODI = Getdate()               
			Where CO_EMPR     = @ISCO_EMPR        
			And  CO_PROV      = @ISCO_ENTI        
			And  CO_TIPO_DOCU = @ISTI_DOCU_ENTI        
			And  NU_DOCU_PROV = @ISNU_DOCU_ENTI        
			And  NU_SECU      = @INNU_SECU_PRPA        
			
			If @@error <> 0        
			Begin        
				Rollback Tran SP_TDMOVI_BANC_I01        
				Return        
			End            
		End    
	
		If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''    
		Begin    
			--Se cancela el documento y se graba en tabla de kardex de estados de documentos    
			Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,     
			@VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU    
			
			If @@error <> 0      
			Begin      
				Rollback Tran SP_TDMOVI_BANC_I01     
				Return      
			End          
		End    
		Else     
		If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''    
		Begin    
			--Se cancela el documento y se graba en tabla de kardex de estados de documentos    
			Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,     
			@VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU    
			
			If @@error <> 0      
			Begin      
				Rollback Tran SP_TDMOVI_BANC_I01     
				Return      
			End          
		End    
	
	End        
	Else         
	Begin        
		Select @VNIM_CONV_ANTE = Isnull(IM_CONV_DOCU,0)        
		From  TDMOVI_BANC         
		Where CO_EMPR = @ISCO_EMPR        
		And   CO_UNID_CONC = @ISCO_UNID_CNTB
		And   CO_BANC = @ISCO_BANC        
		And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
		And   AA_BNCO = @ISAA_BNCO        
		And   MM_BNCO = @ISMM_BNCO        
		And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
		And   NU_COMP_BANC = @ISNU_COMP_BANC        
		And   NU_SECU = @INNU_SECU         
	
		IF RTRIM(ISNULL(@ISCO_CNTA_EMPR, '')) = ''      
			Update TDMOVI_BANC       
			Set IM_DETA = @INIM_DETA,      
				IM_CONV_DOCU = @VNIM_CONV_DOCU,     
				DE_OBSE = @ISDE_OBSE,      
				ST_CIER_DOCU = @ISST_CIER_DOCU,      
				IM_DETA_NEGA = @INIM_DETA_NEGA,      
				FE_USUA_MODI = getdate(),      
				CO_USUA_MODI = @ISCO_USUA_MODI      
			Where CO_EMPR = @ISCO_EMPR      
			And   CO_UNID_CONC = @ISCO_UNID_CNTB		
			And   CO_BANC = @ISCO_BANC      
			And   NU_CNTA_BANC = @ISNU_CNTA_BANC      
			And   AA_BNCO = @ISAA_BNCO      
			And   MM_BNCO = @ISMM_BNCO      
			And   TI_MOVI_BANC = @ISTI_MOVI_BANC      
			And   NU_COMP_BANC = @ISNU_COMP_BANC      
			And   NU_SECU = @INNU_SECU      
		ELSE      
			Update TDMOVI_BANC       
			Set TI_MOVI_OPER = @ISTI_MOVI_OPER,      
				CO_CNTA_EMPR = @ISCO_CNTA_EMPR,      
				TI_ENTI = @ISTI_ENTI,      
				CO_ENTI = @ISCO_ENTI,      
				CO_ORDE_SERV = @ISCO_ORDE_SERV,     
				IM_DETA = @INIM_DETA,      
				IM_CONV_DOCU = @VNIM_CONV_DOCU,                    
				DE_OBSE = @ISDE_OBSE,      
				ST_CIER_DOCU = @ISST_CIER_DOCU,      
				IM_DETA_NEGA = @INIM_DETA_NEGA,      
				FE_USUA_MODI = getdate(),      
				CO_USUA_MODI = @ISCO_USUA_MODI      
			Where CO_EMPR = @ISCO_EMPR      
			And   CO_UNID_CONC = @ISCO_UNID_CNTB
			And   CO_BANC = @ISCO_BANC      
			And   NU_CNTA_BANC = @ISNU_CNTA_BANC      
			And   AA_BNCO = @ISAA_BNCO      
			And   MM_BNCO = @ISMM_BNCO      
			And   TI_MOVI_BANC = @ISTI_MOVI_BANC      
			And   NU_COMP_BANC = @ISNU_COMP_BANC      
			And   NU_SECU = @INNU_SECU      
	
		If @@error <> 0        
		Begin        
			Rollback Tran SP_TDMOVI_BANC_I01        
			Return        
		End            
	
		Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE    
	
		If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''    
		Begin    
			--Se cancela el documento y se graba en tabla de kardex de estados de documentos    
			Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,     
			@VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU    
			
			If @@error <> 0      
			Begin      
				Rollback Tran SP_TDMOVI_BANC_I01     
				Return      
			End          
		End    
		Else     
			If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''    
			Begin    
				--Se cancela el documento y se graba en tabla de kardex de estados de documentos    
				Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, 
    
				@VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU    
				
				If @@error <> 0      
				Begin      
					Rollback Tran SP_TDMOVI_BANC_I01     
					Return      
				End          
			End    	
		End        
	
		Select @VNIM_MOVI_ANTE  = Isnull(IM_MOVI,0)         
		FROM   TCMOVI_BANC        
		WHERE  CO_EMPR = @ISCO_EMPR         
		And	   CO_UNID_CONC = @ISCO_UNID_CNTB
		and    CO_BANC = @ISCO_BANC         
		and    NU_CNTA_BANC = @ISNU_CNTA_BANC          
		and    AA_BNCO = @ISAA_BNCO        
		and    MM_BNCO = @ISMM_BNCO         
		and    TI_MOVI_BANC = @ISTI_MOVI_BANC        
		and    NU_COMP_BANC = @ISNU_COMP_BANC         
	
		/* Sumo todos los documentos de clientes */        
		Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)        
		From TDMOVI_BANC        
		Where CO_EMPR = @ISCO_EMPR        
        And   CO_UNID_CONC = @ISCO_UNID_CNTB
		And   CO_BANC = @ISCO_BANC        
		And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
		And   AA_BNCO = @ISAA_BNCO        
		And   MM_BNCO = @ISMM_BNCO        
		And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
		And   NU_COMP_BANC = @ISNU_COMP_BANC        
		And  TI_ENTI = 'C'        
		And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''        
		
		/* Sumo todos los documentos de proveedores */        
		Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)        
		From TDMOVI_BANC        
		Where CO_EMPR = @ISCO_EMPR        
		And   CO_UNID_CONC = @ISCO_UNID_CNTB
		And   CO_BANC = @ISCO_BANC        
		And   NU_CNTA_BANC = @ISNU_CNTA_BANC        
		And   AA_BNCO = @ISAA_BNCO        
		And   MM_BNCO = @ISMM_BNCO        
		And   TI_MOVI_BANC = @ISTI_MOVI_BANC        
		And   NU_COMP_BANC = @ISNU_COMP_BANC        
		And   TI_ENTI = 'P'        
		And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''        
	
		Select  @VNIM_TOTA_DIST = Isnull(Sum(Isnull(PatIndex(TI_MOVI_OPER, 'C')* IM_DETA - PatIndex(TI_MOVI_OPER, 
'A')* IM_DETA,0)),0)         
		From    TDMOVI_BANC        
		Where CO_EMPR = @ISCO_EMPR        
		And CO_UNID_CONC = @ISCO_UNID_CNTB
		And CO_BANC = @ISCO_BANC        
		And NU_CNTA_BANC = @ISNU_CNTA_BANC        
		And AA_BNCO = @ISAA_BNCO        
		And MM_BNCO = @ISMM_BNCO        
		And TI_MOVI_BANC = @ISTI_MOVI_BANC        
		And NU_COMP_BANC = @ISNU_COMP_BANC        
		And RTRIM(ISNULL(CO_CNTA_EMPR, '')) != ''        
	
		Select  @VNIM_TOTA = @VNIM_TOTA_PROV + @VNIM_TOTA_CLIE + ISNULL(@VNIM_TOTA_DIST,0)        
	
		Update TCMOVI_BANC        
		Set IM_MOVI = Round(@VNIM_TOTA,2),        
		CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                 
		Where CO_EMPR = @ISCO_EMPR         
		And   CO_UNID_CONC = @ISCO_UNID_CNTB
		And   CO_BANC = @ISCO_BANC         
		And   NU_CNTA_BANC = @ISNU_CNTA_BANC         
		And   AA_BNCO = @ISAA_BNCO        
		And   MM_BNCO = @ISMM_BNCO         
		And   TI_MOVI_BANC = @ISTI_MOVI_BANC         
		And   NU_COMP_BANC = @ISNU_COMP_BANC         
		
		If @@error <> 0        
		Begin        
			Rollback Tran SP_TDMOVI_BANC_I01        
			Return        
		End          
	
		Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) 
		From #TWRETE_BANC 
		Where	TI_DOCU_RETE = @VSTI_DOCU_RETE And
				NU_DOCU_RETE = @VSNU_DOCU_RETE
	
		/* PARA COMPROBANTES DE RETENCION*/        
		
		IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0      
		BEGIN        
		
			Select  @VSNO_ENTI = NO_AUXI, @VSNU_RUCC = NU_RUCS        
			From  TMAUXI_EMPR         
			Where  CO_EMPR = @ISCO_EMPR        
			And TI_AUXI_EMPR = @ISTI_ENTI        
			And CO_AUXI_EMPR = @ISCO_ENTI        
			
			Select  @VSNU_CHEQ = ISNULL(NU_CHEQ, ''),         
					@VSNU_DOCU_BANC = ISNULL(NU_DOCU_BANC, '')        
			From  TCMOVI_BANC        
			Where CO_EMPR = @ISCO_EMPR         
			And CO_UNID_CONC = @ISCO_UNID_CNTB
			And CO_BANC = @ISCO_BANC         
			And NU_CNTA_BANC = @ISNU_CNTA_BANC         
			And AA_BNCO = @ISAA_BNCO        
			And MM_BNCO = @ISMM_BNCO         
			And TI_MOVI_BANC = @ISTI_MOVI_BANC         
			And NU_COMP_BANC = @ISNU_COMP_BANC         
	
			
			Select @VSNU_COMP_BACA = Case Len(Rtrim(Ltrim(@VSNU_CHEQ)))        
										When 0 Then  @VSNU_DOCU_BANC        
										Else @VSNU_CHEQ        
									 End        
	
			Insert Into TCCOMP_RETE        
			(CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, FA_TIPO_CAMB, CO_PROV, NO_PROV, NU_RUCC,         
			CO_BANC, NU_CNTA_BANC, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, 
CO_USUA_MODI, FE_USUA_MODI)        
			Values (@ISCO_EMPR, @ISNU_DOCU_ENTI, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_ENTI, @VSNO_ENTI, @VSNU_RUCC, 
@ISCO_BANC, @ISNU_CNTA_BANC,    
			@ISAA_BNCO, @ISMM_BNCO, @ISNU_COMP_BANC, @VSNU_COMP_BACA, 'ACT', @ISCO_USUA_MODI, GETDATE(), 
@ISCO_USUA_MODI, GETDATE())        
			
			If @@error <> 0        
			Begin        
				Rollback Tran SP_TDMOVI_BANC_I01        
				Return        
			End          
	
			Insert Into TDCOMP_RETE        
			(CO_EMPR, NU_COMP_RETE,NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS, IM_TOTA_CONV, IM_PAGO_CONV,         
			IM_RETE_CONV, 
			IM_COMP_PAGO,
			CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)        
			Select  CO_EMPR, @ISNU_DOCU_ENTI, NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS, IM_TOTA_CONV,	IM_PAGO_CONV, 
					IM_RETE_CONV, 
					Round((dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE_DOCU, @ISCO_MONE, @VDFE_OPER, IM_RETE_CONV, 
@VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB)) , 2),
					@ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE()    
			From #TWRETE_BANC 
			Where	TI_DOCU_RETE = @VSTI_DOCU_RETE And
					NU_DOCU_RETE = @VSNU_DOCU_RETE
			
			If @@error <> 0        
				Begin        
				Rollback Tran SP_TDMOVI_BANC_I01        
				Return        
			End        
	
	
			Insert Into    
			TMDOCU_PROV(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,         
				CO_TIPO_OPER, CO_COND_PAGO, CO_UNID_CONC, FE_VENC,         
				FE_EMIS, FE_RECE, FE_PROG_PAGO, FE_REGI_COMP, FA_TIPO_CAMB, CO_MONE,         
				IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET,         
				ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,         
				ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN,         
				ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, PC_DCT1, IM_DCT1,         
				PC_DCT2, IM_DCT2, PC_IMP1, IM_IMP1,         
				PC_IMP2, IM_IMP2, PC_IMP3, IM_IMP3, IM_TOTA,         
				IM_PAGA, CO_ESTA_DOCU, ST_CONT, TI_PROV, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, 
FE_USUA_MODI)        
			Values( @ISCO_EMPR, @ISCO_ENTI, @VSTI_DOCU_RETE, @ISNU_DOCU_ENTI,         
				@VSCO_TIPO_EGRE, @VSCO_COND_CONT, @VSCO_UNID_CONC, @IDFE_DOCU,         
				@IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_MONE_DOCU,        
				@INIM_DOCU, 0, 0, 0, 0,        
				'N', 'N', 'N','N', 'N',         
				'N', 'N', 'N','N', 'N',         
				'N', 'N', 'N', 0, 0,         
				0, 0, 0, 0,         
				0, 0, 0, 0, @INIM_DOCU,        
				@INIM_DOCU, 'PAG', 'N', 'J', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE() )   
 
			
			If @@error <> 0        
			Begin        
				Rollback Tran SP_TDMOVI_BANC_I01        
				Return        
			End        
	
			DELETE #TWRETE_BANC 
			Where	TI_DOCU_RETE = @VSTI_DOCU_RETE And
					NU_DOCU_RETE = @VSNU_DOCU_RETE
	
		END        
		/* Fin para Comprobantes de Retenci«n */         
        
commit Tran SP_TDMOVI_BANC_I01        
/*------------------------ Fin ------------------------------*/


GO
